/**
 * 用户信息检测模块
 * 用于全局检测用户头像和昵称是否完整
 */

// 检测间隔时间（毫秒）
const CHECK_INTERVAL = 3600000; // 1小时

/**
 * 检查用户信息是否完整
 * @param {Object} app 应用实例
 * @returns {Boolean} 是否需要跳转到信息完善页面
 */
function checkUserInfo(app) {
    // 优先从 localStorage 获取用户信息
    let userinfo;
    try {
        // 尝试从 localStorage 获取
        const userinfoStr = uni.getStorageSync('userinfo');
        if (userinfoStr) {
            // 检查是否已经是对象
            if (typeof userinfoStr === 'object') {
                if (userinfoStr.value) {
                    userinfo = userinfoStr.value;
                } else {
                    userinfo = userinfoStr;
                }
                console.log('从localStorage获取用户信息成功（对象）', userinfo);
            } else {
                // 如果是字符串，尝试解析
                try {
                    const userinfoObj = JSON.parse(userinfoStr);
                    if (userinfoObj && userinfoObj.value) {
                        userinfo = userinfoObj.value;
                    } else {
                        userinfo = userinfoObj;
                    }
                    console.log('从localStorage获取用户信息成功（JSON字符串）', userinfo);
                } catch (parseErr) {
                    console.error('解析localStorage中的userinfo失败:', parseErr);
                }
            }
        }

        // 如果localStorage中没有，则尝试从核心模块获取
        if (!userinfo || !userinfo.id) {
            const core = getApp().globalData.$core || getApp().$core || app.$core;
            if (core && typeof core.getUserinfo === 'function') {
                userinfo = core.getUserinfo();
                console.log('从$core获取用户信息成功', userinfo);
            }
        }
    } catch (e) {
        console.error('获取用户信息失败:', e);
        return false;
    }
    
    if (!userinfo || !userinfo.id) {
        return false; // 未登录不需要检查
    }
    
    // 检查头像和昵称是否为空
    if (!userinfo.avatar || !userinfo.nickname) {
        // 检查是否已经跳过验证
        const skipped = uni.getStorageSync('userinfo_verify_skipped');
        if (skipped === 'true') {
            return false; // 用户已选择跳过
        }
        
        // 检查上次提示时间，避免频繁弹窗
        const lastCheckTime = uni.getStorageSync('userinfo_last_check_time');
        const currentTime = new Date().getTime();
        
        if (lastCheckTime && (currentTime - lastCheckTime < CHECK_INTERVAL)) {
            return false; // 检查间隔未到
        }
        
        // 更新检查时间
        uni.setStorageSync('userinfo_last_check_time', currentTime);
        
        return true; // 需要完善信息
    }
    
    return false; // 信息已完整
}

/**
 * 跳转到用户信息完善页面
 * @param {String} currentPage 当前页面路径，用于完成后返回
 */
function navigateToUserInfoVerify(currentPage = '') {
    // 获取当前页面路径，用于验证后返回
    if (!currentPage) {
        const pages = getCurrentPages();
        if (pages && pages.length > 0) {
            currentPage = '/' + pages[pages.length - 1].route;
        }
    }
    
    // 跳转到用户信息完善页面
    uni.navigateTo({
        url: '/pages/company/mine_info?from=' + encodeURIComponent(currentPage)
    }).catch(err => {
        console.error('跳转失败:', err);
        // 尝试不带前导斜杠
        uni.navigateTo({
            url: 'pages/company/mine_info?from=' + encodeURIComponent(currentPage)
        });
    });
}

export default {
    checkUserInfo,
    navigateToUserInfoVerify
};